1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.glib.gslist;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.gnode;
34 
35 extern (C):
36 
37 alias _GSList GSList;
38 
39 struct _GSList
40 {
41 	gpointer data;
42 	GSList* next;
43 }
44 
45 
46 version(Derelict_Link_Static)
47 {
48     extern( C ) nothrow 
49     {
50         GSList* g_slist_alloc();
51         void g_slist_free(GSList* list);
52         void g_slist_free_1(GSList* list);
53         void g_slist_free_full(GSList* list, GDestroyNotify free_func);
54         GSList* g_slist_append(GSList* list, gpointer data);
55         GSList* g_slist_prepend(GSList* list, gpointer data);
56         GSList* g_slist_insert(GSList* list, gpointer data, gint position);
57         GSList* g_slist_insert_sorted(GSList* list, gpointer data, GCompareFunc func);
58         GSList* g_slist_insert_sorted_with_data(GSList* list, gpointer data, GCompareDataFunc func, gpointer user_data);
59         GSList* g_slist_insert_before(GSList* slist, GSList* sibling, gpointer data);
60         GSList* g_slist_concat(GSList* list1, GSList* list2);
61         GSList* g_slist_remove(GSList* list, gconstpointer data);
62         GSList* g_slist_remove_all(GSList* list, gconstpointer data);
63         GSList* g_slist_remove_link(GSList* list, GSList* link_);
64         GSList* g_slist_delete_link(GSList* list, GSList* link_);
65         GSList* g_slist_reverse(GSList* list);
66         GSList* g_slist_copy(GSList* list);
67         GSList* g_slist_copy_deep(GSList *list, GCopyFunc func, gpointer  user_data);
68         GSList* g_slist_nth(GSList* list, guint n);
69         GSList* g_slist_find(GSList* list, gconstpointer data);
70         GSList* g_slist_find_custom(GSList* list, gconstpointer data, GCompareFunc func);
71         gint g_slist_position(GSList* list, GSList* llink);
72         gint g_slist_index(GSList* list, gconstpointer data);
73         GSList* g_slist_last(GSList* list);
74         guint g_slist_length(GSList* list);
75         void g_slist_foreach(GSList* list, GFunc func, gpointer user_data);
76         GSList* g_slist_sort(GSList* list, GCompareFunc compare_func);
77         GSList* g_slist_sort_with_data(GSList* list, GCompareDataFunc compare_func, gpointer user_data);
78         gpointer g_slist_nth_data(GSList* list, guint n);
79     }
80 }
81 else
82 {
83     extern( C ) nothrow 
84     {
85         alias da_g_slist_alloc = GSList* function();																																														
86         alias da_g_slist_free = void function(GSList* list);																																												
87         alias da_g_slist_free_1 = void function(GSList* list);																																												
88         alias da_g_slist_free_full = void function(GSList* list, GDestroyNotify free_func);																																					
89         alias da_g_slist_append = GSList* function(GSList* list, gpointer data);																																							
90         alias da_g_slist_prepend = GSList* function(GSList* list, gpointer data);																																							
91         alias da_g_slist_insert = GSList* function(GSList* list, gpointer data, gint position);																																				
92         alias da_g_slist_insert_sorted = GSList* function(GSList* list, gpointer data, GCompareFunc func);																																	
93         alias da_g_slist_insert_sorted_with_data = GSList* function(GSList* list, gpointer data, GCompareDataFunc func, gpointer user_data);																								
94         alias da_g_slist_insert_before = GSList* function(GSList* slist, GSList* sibling, gpointer data);																																	
95         alias da_g_slist_concat = GSList* function(GSList* list1, GSList* list2);																																							
96         alias da_g_slist_remove = GSList* function(GSList* list, gconstpointer data);																																						
97         alias da_g_slist_remove_all = GSList* function(GSList* list, gconstpointer data);																																					
98         alias da_g_slist_remove_link = GSList* function(GSList* list, GSList* link_);																																						
99         alias da_g_slist_delete_link = GSList* function(GSList* list, GSList* link_);																																						
100         alias da_g_slist_reverse = GSList* function(GSList* list);																																											
101         alias da_g_slist_copy = GSList* function(GSList* list);	
102         alias da_g_slist_copy_deep = GSList* function(GSList *list, GCopyFunc func, gpointer  user_data);
103         alias da_g_slist_nth = GSList* function(GSList* list, guint n);																																										
104         alias da_g_slist_find = GSList* function(GSList* list, gconstpointer data);																																							
105         alias da_g_slist_find_custom = GSList* function(GSList* list, gconstpointer data, GCompareFunc func);																																
106         alias da_g_slist_position = gint function(GSList* list, GSList* llink);																																								
107         alias da_g_slist_index = gint function(GSList* list, gconstpointer data);																																							
108         alias da_g_slist_last = GSList* function(GSList* list);																																												
109         alias da_g_slist_length = guint function(GSList* list);																																												
110         alias da_g_slist_foreach = void function(GSList* list, GFunc func, gpointer user_data);																																				
111         alias da_g_slist_sort = GSList* function(GSList* list, GCompareFunc compare_func);																																					
112         alias da_g_slist_sort_with_data = GSList* function(GSList* list, GCompareDataFunc compare_func, gpointer user_data);																												
113         alias da_g_slist_nth_data = gpointer function(GSList* list, guint n);																																								
114     }
115 
116     __gshared
117     {
118         da_g_slist_alloc g_slist_alloc; 
119         da_g_slist_free g_slist_free; 
120         da_g_slist_free_1 g_slist_free_1; 
121         da_g_slist_free_full g_slist_free_full; 
122         da_g_slist_append g_slist_append; 
123         da_g_slist_prepend g_slist_prepend; 
124         da_g_slist_insert g_slist_insert; 
125         da_g_slist_insert_sorted g_slist_insert_sorted; 
126         da_g_slist_insert_sorted_with_data g_slist_insert_sorted_with_data; 
127         da_g_slist_insert_before g_slist_insert_before; 
128         da_g_slist_concat g_slist_concat; 
129         da_g_slist_remove g_slist_remove; 
130         da_g_slist_remove_all g_slist_remove_all; 
131         da_g_slist_remove_link g_slist_remove_link; 
132         da_g_slist_delete_link g_slist_delete_link; 
133         da_g_slist_reverse g_slist_reverse; 
134         da_g_slist_copy g_slist_copy; 
135         da_g_slist_copy_deep g_slist_copy_deep;
136         da_g_slist_nth g_slist_nth; 
137         da_g_slist_find g_slist_find; 
138         da_g_slist_find_custom g_slist_find_custom; 
139         da_g_slist_position g_slist_position; 
140         da_g_slist_index g_slist_index; 
141         da_g_slist_last g_slist_last; 
142         da_g_slist_length g_slist_length; 
143         da_g_slist_foreach g_slist_foreach; 
144         da_g_slist_sort g_slist_sort; 
145         da_g_slist_sort_with_data g_slist_sort_with_data; 
146         da_g_slist_nth_data g_slist_nth_data; 
147     }
148 }